// 给定一个整数数组 nums 和一个目标值 target，请你在该数组中找出和为目标值的那
// 个 整数，并返回他们的数组下标。
// 你可以假设每种输入只会对应一个答案。但是，你不能重复利用这个数组中同样的元素。
// 力扣刷题连接:https://leetcode-cn.com/problems/two-sum/
// 示例:
// 给定 nums = [2, 7, 11, 15], target = 9
// 因为 nums[0] + nums[1] = 2 + 7 = 9
// 所以返回 [0, 1]
package demo1

import (
	"fmt"
	"math/rand"
	"time"

	"github.com/prometheus/common/log"
)

const SliceLenght = 10

func FindSumNum() {
	var num int
	var sliceNum []int
	_, err := fmt.Scanf("请输入数字:", &num)
	if err != nil {
		num = 10
		log.Error("输入信息有误，请重新输入....")
	}
	seed := rand.NewSource(time.Now().Unix())
	r := rand.New(seed)
	for i := 0; i < SliceLenght; i++ {
		n := r.Intn(10)
		sliceNum = append(sliceNum, n)
	}
	// ---
	var (
		checkNum1 map[int]int
		checkNum2 map[int]int
	)
	checkNum2 = make(map[int]int, SliceLenght)
	checkNum1 = make(map[int]int, SliceLenght)

	for index, v := range sliceNum {
		for i := SliceLenght - 1; i > index; i-- {
			if v+sliceNum[i] == num &&
				index != i &&
				checkNum2[sliceNum[i]] == 0 &&
				checkNum1[v] == 0 {
				fmt.Println("k", i, "v", v, "+", sliceNum[i])
				checkNum2[sliceNum[i]] = i
				checkNum1[v] = index

			}
		}
	}
	fmt.Println(sliceNum)

}
